package com.ec.mn.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ec.mn.entity.HealthRecord;
import com.ec.mn.entity.Notification;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 健康数据记录 Service 接口
 */
public interface HealthRecordService extends IService<HealthRecord> {
    
    /**
     * 根据老人用户ID查询健康记录
     */
    List<HealthRecord> getByElderlyUserId(Long elderlyUserId);

    /**
     * 查询异常健康记;
     */
    List<HealthRecord> getAbnormalRecords();
    
    /**
     * 根据老人用户ID查询异常健康记录
     */
    List<HealthRecord> getAbnormalRecordsByElderlyUserId(Long elderlyUserId);
    
    /**
     * 根据数据类型查询健康记录
     */
    List<HealthRecord> getByRecordType(String recordType);
    
    /**
     * 根据老人用户ID和数据类型查询健康记录
     */
    List<HealthRecord> getByElderlyUserIdAndRecordType(Long elderlyUserId, String recordType);
    
    /**
     * 查询指定时间范围内的健康记录
     */
    List<HealthRecord> getByTimeRange(LocalDateTime startTime, LocalDateTime endTime);
    
    /**
     * 根据老人用户ID查询指定时间范围内的健康记录
     */
    List<HealthRecord> getByElderlyUserIdAndTimeRange(Long elderlyUserId, LocalDateTime startTime, LocalDateTime endTime);
    
    /**
     * 统计老人用户的健康记录数量
     */
    Long countByElderlyUserId(Long elderlyUserId);
    
    /**
     * 统计异常健康记录数量
     */
    Long countAbnormalRecords();
    
    /**
     * 统计指定老人用户的异常健康记录数量
     */
    Long countAbnormalRecordsByElderlyUserId(Long elderlyUserId);
    
    /**
     * 分页查询健康记录（自定义分页）
     */
    IPage<HealthRecord> getPageWithCustom(Page<HealthRecord> page);
    
    /**
     * 根据老人用户ID分页查询健康记录
     */
    IPage<HealthRecord> getPageByElderlyUserId(Page<HealthRecord> page, Long elderlyUserId);
    
    /**
     * 查询最近7天的健康记录
     */
    List<HealthRecord> getRecentRecords();
    
    /**
     * 根据老人用户ID查询最近7天的健康记录
     */
    List<HealthRecord> getRecentRecordsByElderlyUserId(Long elderlyUserId);
    
    /**
     * 获取健康数据统计信息
     */
    Map<String, Object> getStatistics(Long elderlyUserId);
    
    /**
     * 批量保存健康记录
     */
    boolean saveBatch(List<HealthRecord> healthRecords);
    
    /**
     * 根据老人用户ID删除健康记录
     */
    boolean removeByElderlyUserId(Long elderlyUserId);
    
    /**
     * 根据数据类型删除健康记录
     */
    boolean removeByRecordType(String recordType);
    
    /**
     * 根据老人用户ID和数据类型删除健康记录
     */
    boolean removeByElderlyUserIdAndRecordType(Long elderlyUserId, String recordType);
    
    /**
     * 更新健康记录的异常状态
     */
    boolean updateAbnormalStatus(Long id, Integer isAbnormal);
    
    /**
     * 批量更新健康记录的异常状态
     */
    boolean updateBatchAbnormalStatus(List<Long> ids, Integer isAbnormal);

}
